package id.khairizalnetani.tugasakhir;

import id.khairizalnetani.tugasakhir.R;
import id.khairizalnetani.tugasakhir.entity.Siswa;
import java.util.ArrayList;
import java.util.List;
import roboguice.activity.RoboActivity;
import roboguice.inject.InjectView;
import android.os.Bundle;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

public class Halaman1 extends RoboActivity implements OnClickListener
{
	// variable list untuk menampung data skadron dan flight
	List<String>				listSkadron	= new ArrayList<String>();
	List<String>				listFlight	= new ArrayList<String>();

	// inisialisasi object pada layout
	@InjectView(R.id.spFlight)
	Spinner						spFlight;
	@InjectView(R.id.spSkadron)
	Spinner						spSkadron;
	@InjectView(R.id.etNoId)
	EditText					etId;
	@InjectView(R.id.etKodeKonfirmasi)
	EditText					etKode;
	@InjectView(R.id.btnMasuk)
	Button						btnMasuk;
	@InjectView(R.id.btnKeluar)
	Button						btnKeluar;

	public static final String	TAG_FLIGHT	= "flight";
	public static final String	TAG_SKADRON	= "skadron";
	public static final String	TAG_ID		= "id";
	public static final String	TAG_NAMA	= "nama";
	public static final String	TAG_KODE	= "kode";

	// objek untuk db adapter
	private DBAdapter			db;

	public static final int		MENU_REPORT	= Menu.FIRST;

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_halaman1);

		// instansiasi object dari class DBAdapter
		db = new DBAdapter(this);
		db.open();

		etId = (EditText) findViewById(R.id.etNoId);
		etKode = (EditText) findViewById(R.id.etKodeKonfirmasi);

		// memberi event pada tombol
		btnMasuk.setOnClickListener(this);
		btnKeluar.setOnClickListener(this);

		// menambahkan data skadron dan flight
		listSkadron.add("Pilih Skadron");
		listSkadron.add("Skadron II");
		listSkadron.add("Skadron III");
		listSkadron.add("Skadron IV");

		listFlight.add("Pilih Flight");
		listFlight.add("Flight I");
		listFlight.add("Flight II");
		listFlight.add("Flight III");
		listFlight.add("Flight IV");

		if (Utils.DEBUG)
		{
			etId.setText("2009362");
			etKode.setText("09D3D6W2");
		}

		pasangKeSpinner();

	}

	// menambahkan data flight dan skadron ke spinner
	private void pasangKeSpinner()
	{
		ArrayAdapter<String> skadronAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,
				listSkadron);
		skadronAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

		ArrayAdapter<String> flightAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,
				listFlight);
		flightAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

		spFlight.setAdapter(flightAdapter);
		spSkadron.setAdapter(skadronAdapter);
	}

	// fungsi untuk menangani penekanan tombol Masuk dan Keluar
	@Override
	public void onClick(View v)
	{
		switch (v.getId())
		{
			case R.id.btnMasuk:

				if (!checkingSemua())
				{

					AlertDialog.Builder alert = new AlertDialog.Builder(this);

					alert.setTitle("Pesan");
					alert.setMessage("Apakah anda akan Login ?");
					alert.setNegativeButton("Tidak", new DialogInterface.OnClickListener()
					{
						@Override
						public void onClick(DialogInterface dialog, int which)
						{
							dialog.cancel();
						}
					});
					alert.setPositiveButton("Ya", new DialogInterface.OnClickListener()
					{
						@Override
						public void onClick(DialogInterface dialog, int which)
						{

							Siswa siswa = new Siswa();
							siswa = db.getSiswaById(Integer.parseInt(etId.getText().toString()));
							// int flight = spFlight.getSelectedItemPosition();
							// int skadron =
							// spSkadron.getSelectedItemPosition();

							Bundle b = new Bundle();
							b.putInt(TAG_ID, siswa.getId());
							// b.putString(TAG_NAMA, siswa.getNama());
							// b.putString(TAG_KODE, siswa.getKode_aktivasi());
							// b.putInt(TAG_FLIGHT, flight);
							// b.putInt(TAG_SKADRON, skadron);

							// Intent i = new Intent(this, Halaman2.class);
							Intent i = new Intent(Halaman1.this, SelamatDatangActivity.class);
							i.putExtras(b);
							startActivity(i);
							db.close();
							finish();
						}
					});
					alert.show();

				}

				break;

			case R.id.btnKeluar:
				dialogKeluar();
				break;
		}

	}

	// fungsi untuk menangani penekanan tombol back
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event)
	{
		// TODO Auto-generated method stub
		if (keyCode == KeyEvent.KEYCODE_BACK)
		{
			dialogKeluar();
		}
		return super.onKeyDown(keyCode, event);
	}

	// fungsi untk menampilkan info dialog exit
	void dialogKeluar()
	{
		// instance kelas alert dialog
		AlertDialog.Builder alert = new AlertDialog.Builder(this);

		// setting title dan message
		alert.setTitle("Keluar Aplikasi");
		alert.setMessage("Apakah anda ingin keluar ?");
		alert.setNegativeButton("Tidak", new DialogInterface.OnClickListener()
		{
			@Override
			public void onClick(DialogInterface dialog, int which)
			{
				dialog.cancel();
			}
		});
		alert.setPositiveButton("Ya", new DialogInterface.OnClickListener()
		{
			@Override
			public void onClick(DialogInterface dialog, int which)
			{
				finish();
			}
		});
		alert.show();

	}

	// fungsi checking field
	private boolean checkingSemua()
	{
		// cek apakah id diisi
		if (etId.getText().toString().equals(""))
		{
			etId.setError("Mohon isi ID Anda !");
			return true;
		}
		// cek apakah skadron diisi
		if (spSkadron.getSelectedItemPosition() == 0)
		{
			Toast.makeText(this, "Mohon Pilih Skadron", Toast.LENGTH_SHORT).show();
			return true;
		}
		// cek apakah flight diisi
		if (spFlight.getSelectedItemPosition() == 0)
		{
			Toast.makeText(this, "Mohon pilih flight", Toast.LENGTH_SHORT).show();
			return true;
		}

		// cek apakah kode diisi
		if (etKode.getText().toString().equals(""))
		{
			etKode.setError("Mohon isi kode konfirmasi !");
			return true;
		}

		// cek apakah id berada pada skadron yang tepat
		if (!db.checkId(Integer.parseInt(etId.getText().toString()), spFlight.getSelectedItemPosition(),
				(spSkadron.getSelectedItemPosition() + 1)))
		{
			Toast.makeText(
					this,
					"ID "
							+ (etId.getText().toString() + " tidak ada dalam skadron "
									+ (spSkadron.getSelectedItemPosition() + 1) + " Dan Flight " + spFlight
										.getSelectedItemPosition()), Toast.LENGTH_SHORT)
					.show();
			etId.setError("ID Tidak ada");
			return true;
		}

		// cek apakah kode konfirmasi benar
		if (!db.checkKodeKonfirmasi(Integer.parseInt(etId.getText().toString()), etKode.getText().toString()))
		{
			Toast.makeText(this, "Kode Konfirmasi salah", Toast.LENGTH_SHORT)
					.show();
			return true;
		}

		return false;
	}
}
